package lk.icta.core.dao;

import lk.icta.core.entity.LandUsage;
import lk.icta.user.entity.User;

import java.util.List;
import java.util.Map;

/**
 * @author Duminda Dharmakeerthi
 */
public interface LandUsageDAO {

    /**
     * Add a Land Usage
     *
     * @param landUsage The land usage to be added
     * @param user      The user requesting to add the land usage
     */
    public void addLandUsage(LandUsage landUsage, User user);

    /**
     * Update a land usage
     *
     * @param landUsage The land usage to be updated
     * @param user      The user requesting to update the land usage
     */
    public void updateLandUsage(LandUsage landUsage, User user);

    /**
     * Find a land usage by Id
     *
     * @param id   The id of the land usage
     * @param user The user requesting to find the land usage
     * @return The land usage corresponding to the given id
     */
    public LandUsage getLandUsageById(int id, User user);

    /**
     * Returns list of all land usages
     *
     * @return List of all land usages
     */
    public List<LandUsage> getAllLandUsages();

    /**
     * Returns Map of all land usages according to given language
     *
     * @param language The language
     * @param user     The user requesting to get the land usage list
     * @return List of land usages
     */
    public Map<Integer, String> getAllLandUsages(String language, User user);

    public Map<Integer,String> getAllLandUsageTypesByUserLanguage(String language, User user);
}
